<?php

namespace App\Model;

use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Model;

class Base extends Model
{
    // 软删除
    //use SoftDeletes;
    /**
     * 删除数据
     *
     * @param      $map   删除的where
     * @param      $data  删除的数据
     * @param bool $flash 是否需要成功或者失败的提示
     *
     * @return bool
     */
    public function destroyData($map, $flash = true)
    {
        if (empty($map)) {
            flash_error('条件为空', $flash);
            return false;
        }

        // 软删除
        $result=$this
            ->whereMap($map)
            ->delete();
        if ($result) {
            flash_success('删除成功', $flash);
            return $result;
        }else{
            flash_error('删除失败', $flash);
            return false;
        }
    }

    /**
     * 恢复数据
     *
     * @param      $map   恢复的数据where
     * @param bool $flash 是否需要成功或者失败的提示
     *
     * @return bool恢复数据
     */
    public function restoreData($map, $flash = true)
    {
        if (empty($map)) {
            flash_error('条件为空', $flash);
            return false;
        }
        // 恢复
        $result=$this
            ->whereMap($map)
            ->restore();
        if ($result) {
            flash_success('恢复成功', $flash);
            return $result;
        }else{
            flash_error('恢复失败', $flash);
            return false;
        }
    }

    /**
     * 彻底删除
     *
     * @param      $map   彻底删除的数据where
     * @param bool $flash 是否需要成功或者失败的提示
     *
     * @return bool
     */
    public function forceDeleteData($map, $flash = true)
    {
        if (empty($map)) {
            flash_error('条件为空', $flash);
            return false;
        }
        // 彻底删除
        $result=$this
            ->whereMap($map)
            ->forceDelete();
        if ($result) {
            flash_success('彻底删除成功', $flash);
            return $result;
        }else{
            flash_error('彻底删除失败', $flash);
            return false;
        }
    }

    /**
     * @param $ids 1,2,3 或 [1,2,3]
     */
    public function deleteAll($ids){
        $ids = is_array($ids) ? $ids : ( is_string($ids) ?explode (',',$ids) :func_get_args());
        if($this->destroy($ids)){
            return respone_return('200','删除成功');
        }else{
            return respone_return('0','删除失败');
        }
    }
}
